import websocketManager from '@/utils/websocket.js'
import config from '@/config.js'

/**
 * WebSocket消息处理工具类
 */
export default {
  /**
   * 初始化WebSocket连接
   * @param {Object} options 连接选项
   * @param {Function} onConnect 连接成功回调
   * @param {Function} onError 连接错误回调
   * @param {Function} onClose 连接关闭回调
   */
  initWebSocket(options = {}) {
    const wsUrl = config.websocketUrl;

    // 初始化WebSocket连接
    websocketManager.init(wsUrl);

    // 注意：当前WebSocketManager实现在初始化时自动绑定了事件
    // 不需要手动绑定onConnect、onMessage等方法

    // 如果需要额外的回调处理，可以通过uni.$on('websocket-message')来监听

    // 连接成功回调
    if (options.onConnect) {
      // 监听连接成功的事件
      uni.$once('websocket-connected', options.onConnect);
    }
    
    // 错误回调
    if (options.onError) {
      uni.$on('websocket-error', options.onError);
    }
    
    // 关闭回调
    if (options.onClose) {
      uni.$on('websocket-disconnected', options.onClose);
    }
    
    // 消息回调（如果提供）
    if (options.onMessage) {
      uni.$on('websocket-message', options.onMessage);
    }
  },

  /**
   * 关闭WebSocket连接
   */
  closeWebSocket() {
    websocketManager.close();
  },
  
  /**
   * 获取WebSocket连接状态
   */
  getStatus() {
    return websocketManager.getStatus();
  },
  
  /**
   * 检查并重新连接（如果需要）
   */
  checkConnection() {
    websocketManager.checkConnection();
  },
  
  /**
   * 发送消息
   * @param {Object|String} data 要发送的数据
   */
  send(data) {
    websocketManager.send(data);
  }
}